package Level03;

import java.util.*;

/**
 * Map 中有{张三=3,李四=4,王五=5,赵六=6,孙七=7,田七=7,周八=5}这些元素.将 Map 中 value 相
 * 同的元素从 Map 中去除(value 为 7 和 5 是相同的,都要删除).再将 Map 中剩余元素的 key 存
 * 放到一个 ArrayLis 中,并打印到控制台上
 */
public class OneDifficult {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        Collection<Integer> values = hashMap.values();
        hashMap.put("张三",3);
        hashMap.put("李四",4);
        hashMap.put("王五",5);
        hashMap.put("赵六",6);
        hashMap.put("孙七",7);
        hashMap.put("田七",7);
        hashMap.put("周八",5);
        //判断集合中的values是否相同
        //需要一个新的双列集合来统计values相同的次数
        HashMap<Integer, Integer> count = new HashMap<>();
        for (Integer value : hashMap.values()) {
            count.put(value,count.getOrDefault(value,0)+1);
        }
        //  筛选出只出现一次的value，收集其对应的key
        List<String> resultList = new ArrayList<>();
        //通过entry遍历hashmap集合
        Set<Map.Entry<String, Integer>> entries = hashMap.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            //让计数集合的key和原本的集合value进行比较
            if (count.get(entry.getValue()) == 2) {
                resultList.add(entry.getKey());
            }
        }
        System.out.println(resultList);
    }
}
